package map;
/*
  Map 的遍历
  Map 提供了三种遍历方式:
  1:遍历所有的Key
  2:遍历每一组键值对
  3:遍历所有的value(相对不常用)
 */

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapDemo02 {
    public static void main(String[] args) {
        Map<String,Integer> map= new HashMap<>();
        /*
         V put (K , k,V, v)
         将给定的一组键值对存入到Map当中
         由于Map 要求key 不允许重复 ,因此若使用重复的key 存入value
         时为替换value操作,此时方法方法返回的为被替换的value,否则是null

         */

        map.put("语文",99);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",95);
        map.put("生物",94);

        System.out.println(map);
        /*
         遍历所有的key
         Set<k> keySet()
         将当前Map 中所有的key 以一个Set 集合形成返回值
         */
        Set<String> keySet = map.keySet();
        for (String key: keySet){
            System.out.println("key:"+key);
        }
        /*
        遍历键值对
        Set<Entry> entrySet()
        将当前Map 中每一组键值对以一个Entry实例存放与set集合中
        并将其返回.
        注释:Map.Entry 的每一个实例用于表示Map 中的一组键值对.
        其提供了两个方法: getKey 和 getValue用于获取key 和 value值
         */
       Set<Map.Entry<String,Integer>> entrySet =map.entrySet();
        for (Map.Entry<String,Integer> e : entrySet) {
            String  key =e.getKey();
            Integer value =e.getValue();
            System.out.println(key+":"+value);
        }
        /*
        遍历所有的value
        Collection  values()
        将当前Map 中所有的 values 以一个集合形式返回

         */
        Collection<Integer> values =map.values();
        for (Integer value:values){
            System.out.println("value:"+value);
        }
    }
}
